處理好環境設定之後,我們要來連線資料庫了
要連線資料庫,我們需要另一個框架:exposed
Exposed 是一個 Kotlin 的 ORM framework,可以協助我們在 Kotlin 裡面串接資料庫。
他可以支援多數開發或正式使用的資料庫,比方說:
我們下面就來安裝 Exposed 框架,並使用 H2 測試開發看看。
我們在 gradle.build
裡面加上
implementation "com.h2database:h2:1.4.199"
compile 'org.jetbrains.exposed:exposed-core:0.24.1'
compile 'org.jetbrains.exposed:exposed-dao:0.24.1'
compile 'org.jetbrains.exposed:exposed-jdbc:0.24.1'
compile 'org.jetbrains.exposed:exposed-jodatime:0.24.1'
加上之後,IDE 會提示你要更新,點擊更新就可以了。
再來,我們來連線測試看看:
val user = environment.config.property("ktor.database.user").getString()
val password = environment.config.property("ktor.database.password").getString()
Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver", user = user, password = password)
routing { ... }
連線設定好了,再來我們要看看怎麼設置連線。
在 exposed 裡面,產生 SQL 語句的函式都要放在 transaction {}
這個函式裡面,不過開發時我們會需要看 SQL 語句的內容,這時我們可以用 addLogger(StdOutSqlLogger)
來將 SQL 語法印出來看看
我們可以在 /
裡面寫:
val user = environment.config.property("ktor.database.user").getString()
val password = environment.config.property("ktor.database.password").getString()
Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver", user = user, password = password)
routing {
get("/") {
transaction {
// print sql to std-out
addLogger(StdOutSqlLogger)
}
call.respondText("HELLO WORLD!", contentType = ContentType.Text.Plain)
}
// ...
}
然後,連線 http://0.0.0.0:8080 我們畫面還是可以看到「HELLO WORLD!」,可是沒有任何 SQL 語法印在 cmd 視窗內。
這是因為我們還沒使用任何產生 SQL 語句的函式。至於有哪些函式,就等到明天吧!